The embodiments described herein relate generally to co-simulation methods for use with simulation of models of real-world objects and, more particularly, to using parallel execution of the methods during such simulations.
Science and engineering often require modeling of physical systems in order to solve problems. Models of the problems can then be solved without the need of constructing and, frequently, destroying, physical specimens. However, complex multi-disciplinary systems need to be broken up into multiple subsystem models, where the various sub-problems are examined and solved. The term “co-simulation” refers generally to an approach to simulating coupled technical systems. For example, in a master-slave system, one or more slave subsystems would simulate sub-problems while the master system coordinates the overall simulation and transfers data between slave subsystems. The slave subsystems can be “coupled” in order to communicate data during simulation at certain times.
At least some known processes for addressing co-simulation problems are based on establishing specific rules of transferring output variables, or some combinations of output variables, from one subsystem at a “rendezvous” or “communication” time to another subsystem as input variables, and vice versa at the same or previous time. The stability of such processes depends on how strong the coupling conditions are relative to the stiffness of the subsystems themselves. Typically, such processes require subsystems to be processed in a specific order. However, such a requirement requires knowledge of the numerical properties of the individual subsystems and coupling conditions. This prevents using a generic co-simulation procedure from being built and used to analyze different problems. Moreover, such a requirement can greatly reduce performance in analyzing the overall model because it does not enable a parallel co-simulation computational procedure.
Other, more advanced processes address the issues of stability and accuracy in co-simulation techniques by utilizing stabilized modular time integration approaches that can be applied to coupled differential algebraic equations. Such processes are based on the use of Jacobian matrices that correspond to algebraic equations between input and output variables. When algebraic loops are present in a system, known co-simulation processes may become computationally unstable. For example, this will happen if, for a pair of explicitly dependent input variables of a first subsystem and output variables of a second subsystem, input variables of the second subsystem also explicitly depend on the output variables of the first subsystem. Iterative processes for algebraic variables are sometimes used in such cases to improve stability.
For systems that do not include algebraic loops, non-iterative linearly implicit stabilization processes enable a specific chain of communication to be established between the increments of input and output variables at the communication time points. Linear implicit behavior for the output and state variables is often assumed between the communication points for each subsystem. However, this approach requires certain multiplications of Jacobian matrices, corresponding to specific subsystem integration schemes, to be communicated between co-simulated subsystems.
Furthermore, some known processes use a domain decomposition approach for solving problems in structural dynamics, for example. Such processes address co-simulation using condensed components of subsystem matrices that are exposed in the interfaces between subsystems. These matrices are constructed based on time integration equations for each subsystem.
The approaches described above use a modular approach that assumes communication of only the output and input variables and only at the communication points, which may lead to unstable co-simulation processes. Moreover, these approaches require investigation of the presence of algebraic loops in the algebraic system of input-output relationships. Furthermore, these approaches are dependent on the order in which the subsystems are processed and, consequently, prevent the co-simulation process from running in parallel.